import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pyecharts import options as opts
from pyecharts.charts import Bar
def huatu():
    filepath = "../datas/boston-house-prices/housing.xlsx"
    df = pd.read_excel(filepath)
    # print(df.head())
    # 2. 使用matplotlib画直方图
    plt.figure(figsize=(20,12))
    plt.hist(df['MEDV'],bins=100)
    plt.show()
    # 3. 使用pyecharts画直方图

    # 需要自己计算有多少个间隔、以及每个间隔有多少个值
    hist,bin_edges = np.histogram(df['MEDV'],bins=100)
    # 间隔数统计
    print(len(bin_edges))
    # 这是间隔的计数
    print(hist)
    # 注意观察，min是bins的第一个值，max是bins的最后一个元素
    df['MEDV'].describe()
    # 查看bins每一个值和前一个值的差值，可以看到这是等分的数据
    np.diff(bin_edges)
    # pyecharts的直方图使用bar实现
    # 取bins[:-1]，意思是用每个区间的左边元素作为x轴的值
    bar = (
        Bar()
        .add_xaxis([str(x) for x in bin_edges[:-1]])
        .add_yaxis("价格分布",[float(x) for x in hist],category_gap=0)
        .set_global_opts(
            title_opts=opts.TitleOpts(title="波斯顿房价-价格分布-直方图",pos_left="center"),
            legend_opts=opts.LegendOpts(is_show=False)
        )
    )
    # bar.render_notebook()
    # 渲软数据  生成图表
    bar.render("./file/index4.html")












if __name__ == '__main__':
    huatu()